//package com.thinksns.sociax.t4.android.video;
//
//import java.io.File;
//import java.util.ArrayList;
//
//import android.content.Intent;
//import android.os.Bundle;
//import android.os.Environment;
//import android.os.Handler;
//import android.os.Message;
//import android.os.SystemClock;
//import android.view.View;
//import android.view.Window;
//import android.view.View.OnClickListener;
//import android.view.WindowManager;
//import android.widget.CheckBox;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.thinksns.sociax.android.AssertService;
//import com.thinksns.sociax.t4.android.weibo.ActivityCreateWeibo;
//import com.thinksns.sociax.unit.Anim;
//import com.yixia.camera.model.MediaObject;
//import com.yixia.camera.model.MediaThemeObject;
//import com.yixia.camera.util.DeviceUtils;
//import com.yixia.camera.util.FileUtils;
//import com.yixia.camera.util.StringUtils;
//import com.yixia.videoeditor.adapter.UtilityAdapter;
//import com.thinksns.sociax.android.R;
//
///**
// * 视频预览
// * 
// * @author tangjun@yixia.com
// * 
// */
//public class MediaPreviewActivity extends BaseActivity implements
//		OnClickListener, UtilityAdapter.OnNativeListener {
//
//	/** 开始转码 */
//	private static final int HANDLER_ENCODING_START = 100;
//	/** 转码进度 */
//	private static final int HANDLER_ENCODING_PROGRESS = 101;
//	/** 转码结束 */
//	private static final int HANDLER_ENCODING_END = 102;
//	/** 无主题放的位置 */
//	private final static int NO_THEME_INDEX = 0;
//
//	/** 播放按钮、主题音量按钮 */
//	private ImageView mPlayStatus;
//	/** 上一步、下一步 */
//	private TextView mTitleLeft, mTitleNext, mTitleText, mVideoPreviewMusic;
//	/** 主题音乐，原声音 */
//	private CheckBox mThemeVolumn, mVideoVolumn;
//	/** 正在加载 */
//	private View mLoadingView;
//	/** 主题、滤镜容器 */
//	private View mThemeLayout, mFilterLayout;
//
//	/** 主题容器 */
//	private ThemeGroupLayout mThemes, mFilters;
//	/** MV主题 */
//	private ThemeSufaceView mThemeSufaceView;
//
//	/** 主题缓存的目录 */
//	private File mThemeCacheDir;
//	/** 当前主题 */
//	private POThemeSingle mCurrentTheme;
//
//	/** 主题列表 */
//	private ArrayList<POThemeSingle> mThemeList;
//	/** 滤镜列表 */
//	private ArrayList<POThemeSingle> mFilterList;
//
//	/** 导演签名图片 */
//	private String mAuthorBitmapPath;
//	/** 导出视频，导出封面 */
//	private String mVideoPath, mCoverPath;
//	/** 临时合并ts流 */
//	private String mVideoTempPath;
//	/** 当前音乐路径 */
//	private String mCurrentMusicPath;
//	/** 当前音乐名称 */
//	private String mCurrentMusicTitle;
//	/** 当前音乐名称 */
//	private String mCurrentMusicName;
//	/** 是否需要回复播放 */
//	private boolean mNeedResume;
//	/** 是否停止播放 */
//	private boolean mStopPlayer;
//	/** 是否正在转码 */
//	private boolean mStartEncoding;
//	/** 窗体宽度 */
//	private int mWindowWidth;
//	/** 分块边距，默认10dip */
//	private int mLeftMargin;
//	/** 视频时长 */
//	private int mDuration;
//	/** 视频信息 */
//	private MediaObject mMediaObject;
//
//	@Override
//	protected void onCreate(Bundle savedInstanceState) {
//		super.onCreate(savedInstanceState);
//		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//		mMediaObject = (MediaObject) getIntent().getSerializableExtra(
//				CommonIntentExtra.EXTRA_MEDIA_OBJECT);
//		if (mMediaObject == null) {
//			Toast.makeText(this, R.string.record_read_object_faild,
//					Toast.LENGTH_SHORT).show();
//			finish();
//			return;
//		}
//
//		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);// 防止锁屏
//		prepareActivity();
//		prepareViews();
//	}
//
//	/** 预处理参数 */
//	private boolean prepareActivity() {
//		// 加载默认参数
//		mWindowWidth = DeviceUtils.getScreenWidth(this);
//		// 获取传入参数
//		if (Environment.MEDIA_MOUNTED.equals(Environment
//				.getExternalStorageState()) && !isExternalStorageRemovable())
//			mThemeCacheDir = new File(getExternalCacheDir(), "VideoTheme");
//		else
//			mThemeCacheDir = new File(getCacheDir(), "VideoTheme");
//		mLeftMargin = ConvertToUtils.dipToPX(this, 8);
//
//		mVideoPath = mMediaObject.getOutputVideoPath();
//
//		if (StringUtils.isNotEmpty(mVideoPath)) {
//			mCoverPath = mVideoPath.replace(".mp4", ".jpg");
//		}
//		mVideoTempPath = getIntent().getStringExtra("output");
//
//		return true;
//	}
//
//	/** 预处理UI相关 */
//	private void prepareViews() {
//		setContentView(R.layout.activity_media_preview);
//		// 绑定控件
//		mPlayStatus = (ImageView) findViewById(R.id.play_status);
//		mThemeSufaceView = (ThemeSufaceView) findViewById(R.id.preview_theme);
//		mTitleLeft = (TextView) findViewById(R.id.titleLeft);
//		mTitleNext = (TextView) findViewById(R.id.titleRight);
//		mTitleText = (TextView) findViewById(R.id.titleText);
//		mVideoPreviewMusic = (TextView) findViewById(R.id.video_preview_music);
//		mThemes = (ThemeGroupLayout) findViewById(R.id.themes);
//		mFilters = (ThemeGroupLayout) findViewById(R.id.filters);
//		mThemeVolumn = (CheckBox) findViewById(R.id.video_preview_theme_volume);
//		mVideoVolumn = (CheckBox) findViewById(R.id.video_preview_video_volume);
//		mLoadingView = findViewById(R.id.loading);
//		mThemeLayout = findViewById(R.id.theme_layout);
//		mFilterLayout = findViewById(R.id.filter_layout);
//
//		mTitleLeft.setOnClickListener(this);
//		mTitleNext.setOnClickListener(this);
//		mThemeSufaceView.setOnComplateListener(mOnComplateListener);
//		mThemeSufaceView.setOnClickListener(this);
//		findViewById(R.id.tab_theme).setOnClickListener(this);
//		findViewById(R.id.tab_filter).setOnClickListener(this);
//		mThemeVolumn.setOnClickListener(this);
//		mVideoVolumn.setOnClickListener(this);
//
//		mTitleText.setText(R.string.record_camera_preview_title);
//		mTitleNext.setText(R.string.record_camera_preview_next);
//
//		// 设置主题预览默认参数
//		mThemeSufaceView.setIntent(getIntent());
//		mThemeSufaceView.setOutputPath(mVideoPath);// 输出文件
//		mThemeSufaceView.setMediaObject(mMediaObject);
//		if (FileUtils.checkFile(mThemeCacheDir)) {
//			mThemeSufaceView.setFilterCommomPath(new File(mThemeCacheDir,
//					ThemeHelper.THEME_VIDEO_COMMON).getAbsolutePath());
//		}
//		/** 设置播放区域 */
//		View preview_layout = findViewById(R.id.preview_layout);
//		LinearLayout.LayoutParams mPreviewParams = (LinearLayout.LayoutParams) preview_layout
//				.getLayoutParams();
//		mPreviewParams.height = DeviceUtils.getScreenWidth(this);
//		loadThemes();
//	}
//
//	@Override
//	public void onResume() {
//		super.onResume();
//		UtilityAdapter.registerNativeListener(this);
//		if (mThemeSufaceView != null && mNeedResume && mCurrentTheme != null) {
//			restart();
//		}
//		mNeedResume = false;
//	}
//
//	@Override
//	public void onPause() {
//		super.onPause();
//		UtilityAdapter.registerNativeListener(null);
//		if (mThemeSufaceView != null && mThemeSufaceView.isPlaying()) {
//			mNeedResume = true;
//			releaseVideo();
//		}
//	}
//
//	@Override
//	public void onClick(View v) {
//		switch (v.getId()) {
//		case R.id.titleLeft:
//			finish();
//			break;
//		case R.id.titleRight:
//			startEncoding();
//			break;
//		case R.id.preview_theme:// 点击暂停视频播放
//			if (isPlaying())
//				stopVideo();
//			else
//				startVideo();
//			break;
//		case R.id.video_preview_theme_volume:// 静音主题音
//			// 隐藏动画
//			ToastUtils
//					.showToastImage(
//							this,
//							mThemeVolumn.isChecked() ? R.drawable.priview_theme_volumn_close
//									: R.drawable.priview_theme_volumn_open);
//			mThemeSufaceView.setThemeMute(mThemeVolumn.isChecked());
//			restart();
//			break;
//		case R.id.video_preview_video_volume:// 静音原声
//			ToastUtils
//					.showToastImage(
//							this,
//							mVideoVolumn.isChecked() ? R.drawable.priview_orig_volumn_close
//									: R.drawable.priview_orig_volumn_open);
//			mThemeSufaceView.setOrgiMute(mVideoVolumn.isChecked());
//			restart();
//			break;
//		case R.id.tab_theme:
//			mThemeLayout.setVisibility(View.VISIBLE);
//			mFilterLayout.setVisibility(View.GONE);
//			break;
//		case R.id.tab_filter:
//			mThemeLayout.setVisibility(View.GONE);
//			mFilterLayout.setVisibility(View.VISIBLE);
//			break;
//		}
//	}
//
//	/** 开始转码 */
//	private void startEncoding() {
//		// 检测磁盘空间
//		// if (FileUtils.showFileAvailable() < 200) {
//		// Toast.makeText(this, R.string.record_camera_check_available_faild,
//		// Toast.LENGTH_SHORT).show();
//		// return;
//		// }
//
//		stopVideo();
//
//		// 更新静音
//		if (mMediaObject != null && mMediaObject.mThemeObject != null) {
//			mMediaObject.mThemeObject.mThemeMute = mThemeVolumn.isChecked();
//			mMediaObject.mThemeObject.mOrgiMute = mVideoVolumn.isChecked();
//		}
//		// 检测是否需要重新编译
//		mStartEncoding = true;
//		mHandler.removeMessages(HANDLER_ENCODING_START);
//		mHandler.removeMessages(HANDLER_ENCODING_PROGRESS);
//		mHandler.removeMessages(HANDLER_ENCODING_END);
//		mHandler.sendEmptyMessage(HANDLER_ENCODING_START);
//	}
//
//	/** 加载主题 */
//	/** 加载主题 */
//	private void loadThemes() {
//		if (isFinishing() || mStartEncoding)
//			return;
//
//		new android.os.AsyncTask<Void, Void, File>() {
//
//			@Override
//			protected File doInBackground(Void... params) {
//				// 预处理主题
//				while (AssertService.isRunning()) {
//					SystemClock.sleep(500);
//				}
//
//				// 预处理主题（解压更新主题包）
//				File result = ThemeHelper.prepareTheme(
//						MediaPreviewActivity.this, mThemeCacheDir);
//				if (result != null) {
//					// 主题列表
//					mThemeList = ThemeHelper.parseTheme(
//							MediaPreviewActivity.this, mThemeCacheDir,
//							ThemeHelper.THEME_MUSIC_VIDEO_ASSETS,
//							R.array.theme_order);
//
//					// 空主题
//					POThemeSingle orgiTheme = ThemeHelper.loadThemeJson(
//							mThemeCacheDir, new File(mThemeCacheDir,
//									ThemeHelper.THEME_EMPTY));
//					if (orgiTheme != null)
//						mThemeList.add(NO_THEME_INDEX, orgiTheme);
//				}
//
//				// 加载滤镜
//				mFilterList = ThemeHelper.parseTheme(MediaPreviewActivity.this,
//						mThemeCacheDir, ThemeHelper.THEME_FILTER_ASSETS,
//						R.array.theme_filter_order);
//
//				// 生成签名
//				mAuthorBitmapPath = ThemeHelper.updateVideoAuthorLogo(
//						mThemeCacheDir,
//						getString(R.string.record_camera_author,
//								getString(R.string.app_name)), true);
//				// mAuthorBitmapPath = ThemeHelper.updateVideoAuthorLogo(
//				// mThemeCacheDir,
//				// getString(R.string.record_camera_author,
//				// getString(R.string.app_name)), false);
//				return result;
//			}
//
//			@Override
//			protected void onPostExecute(File result) {
//				super.onPostExecute(result);
//				File themeDir = result;
//				if (themeDir != null && !isFinishing() && mThemeList != null
//						&& mThemeList.size() > 1) {
//					/** 循环添加单个主题到主题容器中 */
//					mThemes.removeAllViews();
//
//					String themeName = getIntent().getStringExtra("theme");
//					int defaultIndex = NO_THEME_INDEX, index = 0;
//					if (mCurrentTheme != null) {
//						themeName = mCurrentTheme.themeName;
//					}
//					for (POThemeSingle theme : mThemeList) {
//						addThemeItem(theme, -1);// 顺序添加
//						if (StringUtils.isNotEmpty(themeName)
//								&& IsUtils.equals(theme.themeName, themeName)) {
//							defaultIndex = index;
//						}
//						index++;
//					}
//
//					// 滤镜
//					mFilters.removeAllViews();
//					for (POThemeSingle theme : mFilterList) {
//						addThemeItem(mFilters, theme, -1);// 顺序添加
//					}
//
//					mCurrentTheme = null;
//					mThemes.getChildAt(defaultIndex).performClick();// 默认选中无主题
//				}
//			}
//
//		}.execute();
//	}
//
//	private ThemeView addThemeItem(ThemeGroupLayout layout,
//			POThemeSingle theme, int index) {
//		ThemeView themeView = new ThemeView(MediaPreviewActivity.this, theme);
//		if (theme.themeIconResource > 0) {
//			themeView.getIcon().setImageResource(theme.themeIconResource);
//		} else {
//			if (StringUtils.isNotEmpty(theme.themeIcon)) {
//				themeView.getIcon().setImagePath(theme.themeIcon);
//			}
//		}
//
//		themeView.setOnClickListener(mThemeClickListener);
//		themeView.setTag(theme);
//		// Logger.e("[MediaPreviewActivity]addThemeItem..." +
//		// theme.themeDisplayName + " themeFolder:" + theme.themeFolder);
//		LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
//				LinearLayout.LayoutParams.WRAP_CONTENT,
//				LinearLayout.LayoutParams.WRAP_CONTENT);// mThemeItemWH,
//														// mThemeItemWH
//		lp.leftMargin = mLeftMargin;
//		if (index == -1)
//			layout.addView(themeView, lp);
//		else
//			layout.addView(themeView, index, lp);
//		return themeView;
//	}
//
//	/** 添加当个主题到UI上 */
//	private ThemeView addThemeItem(POThemeSingle theme, int index) {
//		return addThemeItem(mThemes, theme, index);
//	}
//
//	/** 重新播放 */
//	private synchronized void restart() {
//		mStopPlayer = false;
//		mHandler.removeMessages(UtilityAdapter.NOTIFYVALUE_PLAYFINISH);
//		mHandler.sendEmptyMessageDelayed(UtilityAdapter.NOTIFYVALUE_PLAYFINISH,
//				100);
//	}
//
//	private void releaseVideo() {
//		mThemeSufaceView.pauseClearDelayed();
//		mThemeSufaceView.release();
//		mPlayStatus.setVisibility(View.GONE);
//	}
//
//	/** 开始播放 */
//	private void startVideo() {
//		mStopPlayer = false;
//		mThemeSufaceView.start();
//		mPlayStatus.setVisibility(View.GONE);
//	}
//
//	/** 暂停播放 */
//	private void stopVideo() {
//		mStopPlayer = true;
//		mThemeSufaceView.pause();
//		mPlayStatus.setVisibility(View.VISIBLE);
//	}
//
//	private Handler mHandler = new Handler() {
//		@Override
//		public void handleMessage(Message msg) {
//			switch (msg.what) {
//			case HANDLER_ENCODING_START:
//				if (!isFinishing()) {
//					showProgress("",
//							getString(R.string.record_preview_encoding));
//					// WindowManager.LayoutParams lp =
//					// dialog.getWindow().getAttributes();
//					// lp.y = -ConvertToUtils.dipToPX(MediaPreviewActivity.this,
//					// 49 + 30);
//					// dialog.getWindow().setAttributes(lp);
//					// showProgressLayout(false, false,
//					// getString(R.string.progressbar_message_preview_making));
//					releaseVideo();
//					mThemeSufaceView.startEncoding();
//					sendEmptyMessage(HANDLER_ENCODING_PROGRESS);
//				}
//				break;
//			case HANDLER_ENCODING_PROGRESS:// 读取进度
//				int progress = UtilityAdapter
//						.FilterParserInfo(UtilityAdapter.FILTERINFO_PROGRESS);
//				if (mProgressDialog != null) {
//					mProgressDialog.setMessage(getString(
//							R.string.record_preview_encoding_format, progress));
//				}
//				if (progress < 100)
//					sendEmptyMessageDelayed(HANDLER_ENCODING_PROGRESS, 200);
//				else {
//					sendEmptyMessage(HANDLER_ENCODING_END);
//				}
//				break;
//			case HANDLER_ENCODING_END:
//				mDuration = UtilityAdapter
//						.FilterParserInfo(UtilityAdapter.FILTERINFO_TOTALMS);
//				mThemeSufaceView.release();
//				onEncodingEnd();
//				break;
//			case UtilityAdapter.NOTIFYVALUE_BUFFEREMPTY:
//				showLoading();
//				break;
//			case UtilityAdapter.NOTIFYVALUE_BUFFERFULL:
//				hideLoading();
//				break;
//			case UtilityAdapter.NOTIFYVALUE_PLAYFINISH:
//				/** 播放完成时报告 */
//				if (!isFinishing() && !mStopPlayer) {
//					showLoading();
//					mThemeSufaceView.release();
//					mThemeSufaceView.initFilter();
//					mPlayStatus.setVisibility(View.GONE);
//				}
//				break;
//			case UtilityAdapter.NOTIFYVALUE_HAVEERROR:
//				/** 无法播放时报告 */
//				if (!isFinishing()) {
//					Toast.makeText(MediaPreviewActivity.this,
//							R.string.record_preview_theme_load_faild,
//							Toast.LENGTH_SHORT).show();
//				}
//				break;
//			}
//			super.handleMessage(msg);
//		}
//	};
//
//	/** 转码完成 */
//	private void onEncodingEnd() {
//		hideProgress();
//		mStartEncoding = false;
//		ActivityCreateWeibo.staticVideoPath = mMediaObject.getOutputVideoPath();
//		sendBroadcast(new Intent("action_video_ok"));
//		finish();
//		Anim.exit(this);
//	}
//
//	/** 显示加载中 */
//	private void showLoading() {
//		// showProgress("", getString(R.string.record_preview_building));
//		if (mLoadingView != null)
//			mLoadingView.setVisibility(View.VISIBLE);
//	}
//
//	/** 隐藏加载中 */
//	private void hideLoading() {
//		if (mLoadingView != null)
//			mLoadingView.setVisibility(View.GONE);
//	}
//
//	/** 是否正在播放 */
//	private boolean isPlaying() {
//		return mThemeSufaceView.isPlaying();
//	}
//
//	/** 响应主题点击事件 */
//	private OnClickListener mThemeClickListener = new OnClickListener() {
//
//		@Override
//		public void onClick(View v) {
//			POThemeSingle theme = (POThemeSingle) v.getTag();
//			if (theme == null || mMediaObject == null)
//				return;
//
//			if (StringUtils.isNotEmpty(mAuthorBitmapPath)
//					&& (mCurrentTheme == null || !IsUtils.equals(
//							mCurrentTheme.themeName, theme.themeName))) {
//				String key = theme.themeName;
//				((ThemeGroupLayout) v.getParent()).mObservable
//						.notifyObservers(key);
//
//				mCurrentTheme = theme;
//
//				if (mMediaObject.mThemeObject == null)
//					mMediaObject.mThemeObject = new MediaThemeObject();
//
//				if (theme.isMV()) {
//					mMediaObject.mThemeObject.mMVThemeName = theme.themeName;
//					mMediaObject.mThemeObject.mMusicThemeName = theme.musicName;
//					mThemeSufaceView.reset();
//					mThemeSufaceView.setMVPath(theme.themeFolder);
//					mThemeSufaceView.setTheme(theme);
//					mThemeSufaceView.setVideoEndPath(mAuthorBitmapPath);// 签名
//					mThemeSufaceView.setInputPath(mVideoTempPath);// 输入文件
//					// 添加音乐
//					mCurrentMusicPath = mCurrentTheme.musicPath;
//					mCurrentMusicTitle = mCurrentTheme.musicTitle;
//					mCurrentMusicName = mCurrentTheme.musicName;
//					mThemeSufaceView.setMusicPath(mCurrentMusicPath);
//
//					updateMusicTextView();
//
//					// 清空静音状态
//					mThemeVolumn.setChecked(false);
//
//					// 清除滤镜的选中状态
//					if (mFilters != null) {
//						mFilters.mObservable
//								.notifyObservers(POThemeSingle.THEME_EMPTY);
//					}
//				}
//
//				// 滤镜
//				if (theme.isFilter()) {
//					mMediaObject.mThemeObject.mFilterThemeName = theme.themeName;
//					mThemeSufaceView.setFilterPath(theme.getFilterPath());
//				}
//
//				restart();
//			}
//		}
//	};
//
//	/** 更新音乐名称 */
//	private void updateMusicTextView() {
//		if (StringUtils.isEmpty(mCurrentMusicTitle)) {
//			mVideoPreviewMusic.setText(R.string.record_preview_music_nothing);
//			mThemeVolumn.setVisibility(View.GONE);
//		} else {
//			mVideoPreviewMusic.setText(mCurrentMusicTitle);
//			mThemeVolumn.setVisibility(View.VISIBLE);
//		}
//	}
//
//	/** 播放完成 */
//	private ThemeSufaceView.OnComplateListener mOnComplateListener = new ThemeSufaceView.OnComplateListener() {
//
//		@Override
//		public void onComplate() {
//			if (!isFinishing()) {
//				mThemeSufaceView.release();
//			}
//		}
//
//	};
//
//	public static boolean isExternalStorageRemovable() {
//		if (DeviceUtils.hasGingerbread())
//			return Environment.isExternalStorageRemovable();
//		else
//			return Environment.MEDIA_REMOVED.equals(Environment
//					.getExternalStorageState());
//	}
//
//	@Override
//	public void ndkNotify(int key, int value) {
//		if (!isFinishing())
//			mHandler.sendEmptyMessage(value);
//	}
//}
